﻿using System;
using System.Linq;
using SubsidiosBussinessLogic.DataAccess.Interfaces;
using SubsidiosBussinessLogic.Models;

namespace SubsidiosBussinessLogic.DataAccess.SqlServerRepository
{
    public class FuncionarioRepository : EnteRepository, IFuncionarioRepository
    {


        #region Miembros de IFuncionarioRepository

        public FuncionarioRepository(IDataContextFactory dataContext) : base(dataContext)
        {
        }

        public IQueryable<Funcionario> GetFuncionarios()
        {
            return DataContextFactory.Context.GetTable<Funcionario>();
        }

        public Funcionario CreateFuncionario()
        {
            var ente = CreateEnte();
            var funcionario = new Funcionario {Ente = ente};
            DataContextFactory.Context.GetTable<Funcionario>().InsertOnSubmit(funcionario);
            return funcionario;
        }

        public void DeleteFuncionario(Funcionario funcionario)
        {
            DeleteEnte(funcionario.Ente);
            SaveAll();
        }

        public Funcionario FindSingle(Func<Funcionario, bool> func)
        {
            return GetFuncionarios().Single(func);
        }

        public IQueryable<Funcionario> FindWithMatch(Func<Funcionario, bool> func)
        {
            return GetFuncionarios().Where(func).AsQueryable();
        }

        public void SaveFuncionario()
        {
            SaveEnte();
            SaveAll();
        }

        #endregion
    }
}